package com.tailyou.hms.neteasecloudmusic;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Binder;
import android.os.IBinder;

import androidx.annotation.Nullable;

public class PlayService extends Service {

    private MediaPlayer mPlayer;

    /**
     * Binder作为Activity与Service 之间的信使
     */
    public class MusicBinder extends Binder {

        /**
         * 播放
         * @param resId
         */
        public void play(int resId) {
            try {
                if (mPlayer != null && mPlayer.isPlaying()) {
                    mPlayer.reset();
                }
                Uri parse = Uri.parse("android.resource://" + getPackageName() + "/" + resId);
                mPlayer.setDataSource(PlayService.this, parse);
                mPlayer.prepare();
                mPlayer.start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        /**
         * 是否正在播放
         *
         * @return
         */
        public boolean isPlaying() {
            return mPlayer.isPlaying();
        }

        /**
         * 暂停
         */
        public void pause() {
            mPlayer.pause();
        }

        /**
         * 重新播放
         */
        public void replay() {
            mPlayer.start();
        }

        /**
         * 获取音乐时长
         *
         * @return
         */
        public long getMusicDuration() {
            return mPlayer.getDuration();
        }

        /**
         * 获取当前播放进度
         *
         * @return
         */
        public long getPosition() {
            return mPlayer.getCurrentPosition();
        }

        /**
         * 设置播放进度
         *
         * @param position
         */
        public void setPosition(int position) {
            mPlayer.seekTo(position);
        }

        /**
         * 关闭
         */
        public void close() {
            mPlayer.pause();
            mPlayer.reset();
            mPlayer.release();
        }

    }

    /**
     * Activity绑定Service的时候，给Activity返回一个Binder，作为Activity
     * 月Service的信使
     *
     * @param intent
     * @return
     */
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new MusicBinder();
    }

    /**
     * 在绑定Service的同时，需要创建Service，
     * 那么，在创建Service的时候，初始化MeadiaPlayer
     */
    @Override
    public void onCreate() {
        super.onCreate();
        if (mPlayer == null) {
            mPlayer = new MediaPlayer();
        }
    }

}
